﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using PontoDeVenda.DataServiceReference;

namespace PontoDeVenda
{
    public partial class JanelaProduto : ChildWindow
    {
        public JanelaProduto()
        {
            InitializeComponent();
        }

        private void OKButton_Click(object sender, RoutedEventArgs e)
        {
            this.DialogResult = true;
        }

        private void CancelButton_Click(object sender, RoutedEventArgs e)
        {
            this.DialogResult = false;
        }

        private void btnInserirProduto_Click(object sender, RoutedEventArgs e)
        {
            txtMensagemStatus.Text = "";
            try
            {
                Produto produto = new Produto();
                produto.produtoID = Convert.ToInt32(txtProdutoID.Text);
                produto.descricao = txtDescricao.Text;
                produto.precoUnitario = Convert.ToDecimal(txtPreco.Text);

                DataServiceReference.DataServiceClient proxy = new
                        DataServiceReference.DataServiceClient();

                proxy.InserirProdutoAsync(produto);

                MessageBox.Show("Produto inserido com sucesso", "Insert", MessageBoxButton.OK);
            }
            catch (Exception ex)
            {
                txtMensagemStatus.Text = "ERRO! " + ex.Message;
            }
        }

        private void btnAtualizarProduto_Click(object sender, RoutedEventArgs e)
        {
            txtMensagemStatus.Text = "";
            try
            {
                Produto produto = new Produto();
                produto.produtoID = Convert.ToInt32(txtProdutoID.Text);
                produto.descricao = txtDescricao.Text;
                produto.precoUnitario = Convert.ToDecimal(txtPreco.Text);

                DataServiceReference.DataServiceClient proxy = new
                        DataServiceReference.DataServiceClient();

                proxy.AtualizarProdutoAsync(produto);

                MessageBox.Show("Produto atualizado com sucesso", "Update", MessageBoxButton.OK);
            }
            catch (Exception ex)
            {
                txtMensagemStatus.Text = "ERRO! " + ex.Message;
            }
        }

        private void btnExcluirProduto_Click(object sender, RoutedEventArgs e)
        {
            txtMensagemStatus.Text = "";
            try
            {
                int produtoID = Convert.ToInt32(txtProdutoID.Text);
                DataServiceReference.DataServiceClient proxy = new
                    DataServiceReference.DataServiceClient();

                proxy.DeletarProdutoAsync(produtoID);

                MessageBox.Show("Produto deletado com sucesso", "Delete", MessageBoxButton.OK);
            }
            catch (Exception ex)
            {
                txtMensagemStatus.Text = "ERRO! " + ex.Message;
            }
        }

        private void btnLocalizar_Click(object sender, RoutedEventArgs e)
        {
            txtMensagemStatus.Text = "";
            try
            {
                int produtoID = Convert.ToInt32(txtProdutoID.Text);
                DataServiceReference.DataServiceClient proxy = new
                    DataServiceReference.DataServiceClient();
                proxy.GetProdutoPorIdCompleted += new
                    EventHandler<DataServiceReference
                    .GetProdutoPorIdCompletedEventArgs>(proxy_GetProdutoPorIdCompleted);
                
                proxy.GetProdutoPorIdAsync(produtoID);

            }
            catch (Exception ex)
            {
                txtMensagemStatus.Text = "ERRO: " + ex.Message;
            }
        }

        void proxy_GetProdutoPorIdCompleted(object sender,
            DataServiceReference.GetProdutoPorIdCompletedEventArgs e)
        {
            Produto produto = e.Result;
            if (produto != null)
            {
                this.LayoutRoot.DataContext = e.Result;
            }
            else
            {
                MessageBox.Show("Produto não encontrado", "Select", MessageBoxButton.OK);
            }

        }
        
    }
}

